package com.shanzmoo.core.service;

import com.shanzmoo.db.product.entity.dto.SpuSearchDto;
import com.shanzmoo.base.bean.SResponse;

import java.util.List;
import java.util.Map;

/**
 * redis 搜索服务接口
 * @author: Gzhao 2020/12/24
 */
public interface IRedisSearchService {

    /**
     * 搜索
     * @param text 搜索关键子
     * @return 返回 map 集合：key-sku，value-相关度
     */
    SResponse<List<SpuSearchDto>> query(String text);

    /**
     * 添加单个商品 到搜索缓存
     *     索引以 hash 结构存储
     * @param spuId 商品id
     * @param spuName 商品名称
     * @param updateAll 是否在进行全量更新
     * @return
     */
    SResponse<Boolean> addOne(String spuId, String spuName, boolean updateAll);

    /**
     * 更新单个商品 到搜索缓存
     *     索引以 hash 结构存储
     * @param spuId 商品id
     * @param spuName 商品名称
     * @return
     */
    SResponse<Boolean> updateOne(String spuId, String spuName);

    /**
     * 删除单个spu搜索缓存
     * @param spuId
     * @return
     */
    SResponse<Boolean> deleteOne(String spuId);

    /**
     * 全量更新 spu 搜索缓存
     * @param spuMap Map<spuId, spuName>
     * @return
     */
    SResponse<Boolean> updateAllSpu(Map<String, String> spuMap);

    /**
     *
     */
    String obtainActiveSpace(boolean updateAll);
}
